@echo off
chcp 65001
title 卸载云打印应用服务

:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 错误: 请以管理员身份运行此脚本!
    echo 请右键点击此批处理文件并选择"以管理员身份运行"。
    pause
    exit /b 1
)

:: 设置服务名称
set "SERVICE_NAME=CloudPrintAppSvc"

echo 正在检查服务 %SERVICE_NAME% 是否存在...
sc query %SERVICE_NAME% >nul 2>&1
if %errorlevel% neq 0 (
    echo 服务 %SERVICE_NAME% 不存在，无需卸载。
    goto check_nssm
)

echo 正在停止服务 %SERVICE_NAME%...
net stop %SERVICE_NAME% >nul 2>&1
timeout /t 5 >nul

echo 正在删除服务 %SERVICE_NAME%...
sc delete %SERVICE_NAME% >nul 2>&1
if %errorlevel% neq 0 (
    echo 警告: 无法使用SC命令删除服务，将尝试使用其他方法。
) else (
    echo 服务已成功删除。
)

:check_nssm
:: 检查是否有NSSM工具，如果有则尝试使用NSSM卸载
set "NSSM_DIR=%~dp0tools\nssm"
set "NSSM_EXE=%NSSM_DIR%\nssm-2.24\win64\nssm.exe"

if exist "%NSSM_EXE%" (
    echo 找到NSSM工具，尝试使用NSSM卸载服务...
    "%NSSM_EXE%" stop %SERVICE_NAME% >nul 2>&1
    "%NSSM_EXE%" remove %SERVICE_NAME% confirm >nul 2>&1
    if %errorlevel% equ 0 (
        echo 使用NSSM成功删除服务。
    )
)

:: 检查服务是否已完全删除
sc query %SERVICE_NAME% >nul 2>&1
if %errorlevel% equ 0 (
    echo 警告: 服务仍然存在，可能需要重启计算机才能完全删除。
    echo 提示: 您可以尝试重启计算机后，再运行此脚本。
) else (
    echo 服务 %SERVICE_NAME% 已成功卸载。
)

:: 再次检查CloudPrintApp服务（标准服务版本）
set "STANDARD_SERVICE=CloudPrintApp"
sc query %STANDARD_SERVICE% >nul 2>&1
if %errorlevel% equ 0 (
    echo.
    echo 发现另一个云打印服务 %STANDARD_SERVICE%
    echo 是否同时卸载此服务? (Y/N)
    choice /c YN /n
    if %errorlevel% equ 1 (
        echo 正在停止并卸载服务 %STANDARD_SERVICE%...
        net stop %STANDARD_SERVICE% >nul 2>&1
        sc delete %STANDARD_SERVICE% >nul 2>&1
        echo 服务 %STANDARD_SERVICE% 已卸载。
    )
)

echo.
echo 卸载完成!
echo.
pause 